¿Cuándo usar Tools sincrónicas o asincrónicas?
En base a la arquitectura orientada a eventos para MCP/A2A que expusimos en el post anterior (👉
https://lnkd.in/e-fwEtfy), hay casos donde las tools no deberían ser asíncronas.
En Karibu definimos una regla simple y es el tiempo de ejecución promedio:
⚡ Si la ejecución de la herramienta dura menos de 5 segundos, es sincrónica
🕛 Si la ejecución de la herramienta dura más de 5 segundos, es asincrónica
Tools Asincrónicas
Aplican para procesos que requieren más recursos o tiempo de ejecución, como:
- Un agente necesita obtener todos los archivos de un commit de un repositorio.
- Se clona el repositorio y los archivos se almacenan en S3.
- Luego se devuelve al agente la lista de keys de S3 generadas.
Tools Sincrónicas
Se usan en escenarios donde la operación es rápida o existen restricciones en servicios serverless que usemos, por ejemplo:
- Un agente necesita leer el contenido completo de un archivo almacenado en S3.
Si el tamaño del archivo supera los límites de SQS o EventBrisge, una tool sincrónica puede retornar todo el contenido directamente.
- Consultar una tabla de Dynamo con una respuesta rápida, sin requerir procesos asincrónicos.
🔐 Consideraciones de Seguridad
La desventaja del enfoque sincrónico es que para tener un nivel de permisos más granulares, se deberían tener varios MCP servers con sus propias políticas de IAM.
En cambio, en el caso asincrónico cada Lambda, Batch o EC2 tienen sus propias políticas.
🔵 Conclusión
No hay una receta definida, pero podemos tomar algunos criterios (como el tiempo de ejecución y restricciones de serverless) para determinar en qué caso usar un enfoque asincrónico o sincrónico.
💬 Y tú, ¿qué opinas? ¿cuándo te ha resultado mejor usar una tool sincrónica y cuándo una asincrónica?